package org.supreme.org.domain;

import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 
 * </p>
 *
 * @author director
 * @since 2022-12-04
 */
@TableName("t_department")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department extends Model<Department> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 部门编号
     */
    private String sn;
    /**
     * 部门名称
     */
    private String name;
    /**
     * 部门的上级分类层级id
     */
    private String dirPath;
    /**
     * 部门状态，0正常，1禁用
     */
    private Integer state;
    /**
     * 部门管理员，关联Employee表id
     */
    @TableField("manager_id")
    private Long managerId;
    /**
     * 上级部门
     */
    @TableField("parent_id")
    private Long parentId;
    @TableField("shop_id")
    private Long shopId;
    @TableField(exist = false)//忽略实体映射
    private Employee manager;
    @TableField(exist = false)//忽略实体映射
    private Department parent;
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @TableField(exist = false)//忽略实体映射
    private List<Department> children=new ArrayList<>();

    @Override
    protected Serializable pkVal() {
        return id;
    }


//    public Long getId() {
//        return id;
//    }
//
//    public void setId(Long id) {
//        this.id = id;
//    }
//
//    public String getSn() {
//        return sn;
//    }
//
//    public void setSn(String sn) {
//        this.sn = sn;
//    }
//
//    public String getName() {
//        return name;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }
//
//    public String getDirPath() {
//        return dirPath;
//    }
//
//    public void setDirPath(String dirPath) {
//        this.dirPath = dirPath;
//    }
//
//    public Integer getState() {
//        return state;
//    }
//
//    public void setState(Integer state) {
//        this.state = state;
//    }
//
//    public Long getManagerId() {
//        return managerId;
//    }
//
//    public void setManagerId(Long managerId) {
//        this.managerId = managerId;
//    }
//
//    public Long getParentId() {
//        return parentId;
//    }
//
//    public void setParentId(Long parentId) {
//        this.parentId = parentId;
//    }
//
//    public Long getShopId() {
//        return shopId;
//    }
//
//    public void setShopId(Long shopId) {
//        this.shopId = shopId;
//    }
//
//    @Override
//    protected Serializable pkVal() {
//        return this.id;
//    }
//
//    @Override
//    public String toString() {
//        return "Department{" +
//        ", id=" + id +
//        ", sn=" + sn +
//        ", name=" + name +
//        ", dirPath=" + dirPath +
//        ", state=" + state +
//        ", managerId=" + managerId +
//        ", parentId=" + parentId +
//        ", shopId=" + shopId +
//        "}";
//    }
}
